数字图像处理(入门篇)七 图像数据预处理之灰度变化 | 您所在的位置:网站首页 › python 白色校正 › 数字图像处理(入门篇)七 图像数据预处理之灰度变化 |
目录 一 常用操作 1 反转 2 对比度增强 3 对比度压缩 4 伽马矫正 二 实践 1 反转、对比度增强和对比度压缩 (1) 代码 (2) 结果图 2 伽马矫正 (1) 代码 (2) 结果图 (3) 结论 (4) np.power函数 图像灰度变换:将原始图像中的每一个点的灰度值,按照特定的映射函数,变换为另一个灰度值的过程。 灰度变换是对每一个像素点单独的操作。像素点原始像素值为x,灰度变换映射函数为T(x),变换后的像素值为y,公式为:y = T(x) 常用的操作有:反转、 对比度增强、对比度压缩和 伽马矫正。 一 常用操作 1 反转将图像灰度值反转的操作,即黑色变成白色,白色变成黑色的过程。 映射函数如下: 2 对比度增强通过增加相邻灰度级的灰度差别实现。 映射函数如下: 从上图可以看出,(d2 - d1)> (s2 - s1),[s1, s2]区间的像素点被拉伸到 [d1, d2]区间,达到了对比度增强的效果。 3 对比度压缩通过减小相邻灰度级的灰度差别实现。 映射函数如下: 从上图可以看出,(d2 - d1)< (s2 - s1),[s1, s2]区间的像素点被压缩到 [d1, d2]区间,达到了对比度压缩的效果。 4 伽马矫正伽马矫正:借助了指数变换映射的增强技术。公式如下:
二 实践 1 反转、对比度增强和对比度压缩 (1) 代码 使用 OpenCV 的 look up table 函数(cv2.LUT)修改图像的灰度值。 import numpy as np import matplotlib.pyplot as plt import cv2 def linear_trans_img(img, k, b=0): trans_list = [(np.float32(x)*k+b) for x in range(256)] trans_table = np.array(trans_list) trans_table[trans_table > 255] = 255 trans_table[trans_table < 0] = 0 trans_table = np.round(trans_table).astype(np.uint8) return cv2.LUT(img, trans_table) def run(img_path): img = cv2.imread(img_path, 0) reversal_img = linear_trans_img(img, -1, 255)# 反转 stretch_img = linear_trans_img(img, 1.5)# k>1,拉伸 compress_img = linear_trans_img(img, 0.5)# K |
CopyRight 2018-2019 实验室设备网 版权所有 |